package process.module;

import org.apache.commons.lang.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;

public class TextProcess {

	private static String[] ignoreText = { "TRẮNG", "ĐEN", "ĐỎ", "XANH",
			"VÀNG", "CAM", "TÍM", "LỤC", "CHÀM", "LAM", "HỒNG", "XÁM", "BẠC",
			"KEM", "DƯƠNG", "ĐỒNG", "NÂU", "LÁ", "NHAT", "WHITE", "BLACK",
			"RED", "ORGANGE", "OCEAN", "BRIGHT", "BLUE", "CYAN", "YELLOW",
			"ORANGE", "FUCHSIA", "PURPLE", "GREEN", "PINK", "COFFEE", "SNOW",
			"LIME", "CHROME", "ACACIA", "CHAMPANGE", "LIGHT", "CORAL", "ROSE",
			"MAGENTA", "DYNAMIC", "CHARCOAL", "MAHOGANY", "WARM", "MIDNIGHT",
			"DARK", "STEEL", "PHANTOM", "METAL", "ORCHID", "ZOUM", "ZODIUM",
			"FROSTY", "GREY", "BROWN", "GRAY", "GOLD", "SILVER", "GRAPHITE",
			"TITAN", "TOPAZ", "ZIRCON", "AQUA", "AMETHYST", "ZIR", "VIOLET",
			"FULL", "MINI", "LARGE", "SMALL", "MEDIUM", "ĐTDĐ", "TV", "LED",
			"LCD", "CRT", "PLASMA", "SLIM", "AMPLY", "AMPLI", "DVD",
			"ÂM THANH", "BLURAY", "HIFI", "HI-FI", "KARAOKE", "KTS", "ĐT",
			"KHÔNG", "DÂY", "UỐNG", "NÓNG", "LẠNH", "THIẾT", "BỊ", "LÀM", "ĐỒ",
			"LOA", "CẦM", "TAY", "HƠI", "NƯỚC", "LỬNG", "ĐỨNG", "TREO", "TRẦN",
			"ĐẢO", "XÁCH", "ỐNG", "KÍNH", "VỚI", "DU", "LỊCH", "THÙNG", "TỪ",
			"ĐÔI", "ĐƠN", "NGOẠI", "NỘI", "ĐIỆN", "CỨNG", "HỞ", "HÓA", "2 TAY",
			"MÀU", "ĐA", "CHỨC", "NĂNG", "PHUN", "MÁY", "TÍNH", "BẢNG", "CON",
			"SẤY", "BÌNH", "VÀ", "HOẶC", "GỖ", "COSY", "SOLID", "CO", "CÓ",
			"HOA", "VĂN", "NHẠT", "ROCK", "ICY", "TUNGSTEN", "JUPITER",
			"OBSLAN", "MID", "NAVI", "GLOSS", "NÀNG", "SOFT", "STRONG", "CHIC",
			"LUXURY", "CANDY", "ROMANTIC", "CHERRY"};

	public static String clear(String text) {
		for (int i = 0; i < ignoreText.length; i++) {
			text = text.replaceAll("(?i)" + ignoreText[i], "").trim();
			text = StringUtils.strip(text, String.valueOf('-'));
		}
		text = text.replaceAll("\'", "");
		text = text.replaceAll("\\(", "");
		text = text.replaceAll("\\)", "");
		text = text.replaceAll("#", " ");
		text = text.replaceAll(" - ", " ");
		text = text.replaceAll("\\+", "");
		// text = text.replaceAll("\\-", "");
		// text = text.replaceAll("\\*", "");
		text = text.replaceAll("\\/", "");
		text = StringUtils.strip(text, String.valueOf('-'));

		text = Jsoup.clean(text, Whitelist.none());
		return text;
	}

	public static boolean compareTextOnly(String lookup, String product) {
		String compareLookup = getAlphabetNumerText(lookup);
		String compareProduct = getAlphabetNumerText(product);
		boolean check = false;
		//System.out.println("####### COMPARE: " + compareLookup + " / " + compareProduct);

		// Compare equal absolutely
		if (compareLookup.equalsIgnoreCase(compareProduct)) {
			return true;
		}

		// Compare contains
		// String[] components = product.split("_");
		// StringBuilder component = new StringBuilder();
		// for (int i = 1; i < components.length; i++) {
		// component.append(components[i]);
		// }
		// component = new
		// StringBuilder(getAlphabetNumerText(component.toString()));
		// if(compareLookup.contains(component)) {
		// return true;
		// }

		return check;
		// return (compare1.equalsIgnoreCase(compare2)) ? true : false;
	}

	public static String getAlphabetNumerText(String text) {
		StringBuilder builder = new StringBuilder();
		for (char ch : text.toCharArray()) {
			if (Character.isLetterOrDigit(ch))
				builder.append(ch);
		}
		return builder.toString();
	}

	public static void main(String[] args) {
		// String text1 = "SONY_KLV-32EX330";
		// String text2 = "SONY_KLV-32EX330_ME6";

		String text1 = "SAMSUNG UA46ES8000";
		String text2 = "SAMSUNG UA46ES8000RXXV";

		double distance = (double) StringUtils.getLevenshteinDistance(text1,
				text2) / text2.length();
		System.out.println(distance);
		// System.out.println(compareTextOnly(text1, text2));
	}
}